***************************************
*          @@  FLEX 3 @@              *                  
*                                     *
*   ------ >> Chapitre 15 << ------   *
*                                     *
***************************************




<?xml version="1.0" encoding="utf-8"?>

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300">

	<mx:Panel x="10" y="11" width="380" height="141" layout="absolute" title="Nombre de lettres">
	    <mx:TextInput x="10" y="10" width="340" id="chaine_txt"/>
	    <mx:TextInput x="190" y="40" id="resultat_txt"/>
	    <mx:Button x="10" y="40" label="Calculer" click="resultat_txt.text = String(chaine_txt.length)" id="btn_calculer"/>
	</mx:Panel>
	
</mx:Module>
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:ModuleLoader id="module" url="modules/modLettre.swf" >
	</mx:ModuleLoader>
	
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
	    <![CDATA[
	
	        import mx.modules.*;
	
	        public function chargerModule(adresse:String):void{
	
            // Adresse du module
	            chargeurModule.url = adresse;
	
	            // Chargement du module
	            chargeurModule.loadModule();
	
	        }
    ]]>
	</mx:Script>
	
	<mx:ModuleLoader id="chargeurModule"> </mx:ModuleLoader>

	<mx:Button x="427" y="10" label="Charger" id="btn_chargerModule" click="chargerModule('modules/modLettre.swf')"/>

</mx:Application>
public function dechargerModule():void{

	    // Dchargement du module
	    chargeurModule.unloadModule();
	
	}
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
	    <![CDATA[
		
	        import mx.modules.*;
	        import mx.events.ModuleEvent;
	        import mx.controls.Alert;
	
	        public function chargerModule(adresse:String):void{
	            // Adresse du module
	            chargeurModule.url = adresse;
	
	            // Chargement du module
	            chargeurModule.loadModule();
	        
	        }
	
	        public function interceptionErreur(e:ModuleEvent):void{
	        Alert.show ("Erreur lors du chargement du module : "+e.errorText);
	        }
	
	    ]]>
</mx:Script>

	<mx:ModuleLoader id="chargeurModule" error="interceptionErreur(event)">
		</mx:ModuleLoader>

	<mx:Button x="427" y="10" label="Charger" id="btn_chargerModule" click="chargerModule('modules/modLettres.swf')"/>

</mx:Application>
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
	    <![CDATA[
		
	        import mx.modules.*;
	        import mx.events.ModuleEvent;
	        import mx.controls.Alert;
	
	        public function chargerModule(adresse:String):void{
	            // Adresse du module
	            chargeurModule.url = adresse;
	
	            // Chargement du module
	            chargeurModule.loadModule();
	        }
	
	         [Bindable]
	        public var texte:String
	
	        public function afficherProgression(e:ProgressEvent):void
	        {
	            // Taille du module
	            var tailleModule:Number = e.bytesTotal;
	
	            // Nombre doctets chargs
	            var nbOctets:Number = e.bytesLoaded;
	
	            // Calcul du pourcentage de chargement
	            var pourcentage:Number = Math.round((nbOctets/tailleModule)*100)
	
	            // Affichage du texte
	            texte = String(pourcentage)+"%";
	        }
	
	    ]]>
</mx:Script>

	<mx:ModuleLoader id="chargeurModule" progress="afficherProgression(event)">
	</mx:ModuleLoader>

	<mx:Button x="427" y="10" label="Charger" id="btn_chargerModule" click="chargerModule('modules/modLettre.swf')"/>

	<mx:Panel x="10" y="226" width="401" height="97" layout="absolute" title="Affichage du chargement" id="panel_1">
	    <mx:Text x="98" y="23" width="222" id="progression_txt" text="{texte}"/>
	    <mx:Label x="10" y="23" text="% Charg :" width="80"/>
	</mx:Panel>
		
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300">
	
	<mx:Script>
	    <![CDATA[
	
	        [Bindable]
	        public var texte:String
	
	        public function set chaine(param:String):void
	        {
	            texte = param;
	        }
	    ]]>
	</mx:Script>
	
	<mx:Panel x="10" y="11" width="380" height="141" layout="absolute" title="Nombre de lettres">
	    <mx:TextInput x="10" y="10" width="340" id="chaine_txt" text="{texte}"/>
	    <mx:TextInput x="190" y="40" id="resultat_txt"/>
	    <mx:Button x="10" y="40" label="Calculer" click="resultat_txt.text = String(chaine_txt.length)" id="btn_calculer"/>
	</mx:Panel>
	
</mx:Module>
package
{
	import flash.events.IEventDispatcher;

	public interface InterfaceModule extends IEventDispatcher
	{
	    function set chaine(param:String):void;
	}
}
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" implements="InterfaceModule">
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
	    <![CDATA[
	        import mx.events.ModuleEvent;
	
	        public function chargerModule(module:String):void
	        {
	            chargeurModule.url = module;
	            chargeurModule.loadModule();
	        }
	
	        public function finChargementModule(e:ModuleEvent):void
	        {
	            var chargeur:ModuleLoader = e.target as ModuleLoader;
	            var connexionInterface:* = chargeur.child as InterfaceModule;
	
	            if( connexionInterface != null ) {
                connexionInterface.chaine = "Message  afficher";
            }
	        }
	    ]]>
</mx:Script>

<mx:ModuleLoader id="chargeurModule" ready="finChargementModule(event)"></mx:ModuleLoader>

<mx:Button id="btn_charger" x="468" y="10" label="Charger" click="chargerModule('modLettre.swf')"/>
	
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" implements="InterfaceModule">
	
	<mx:Script>
	    <![CDATA[
	
	        [Bindable]
	        public var texte:String
	
	        public function set chaine(param:String):void
	        {
	            texte = param;
	        }
	
	        public function envoyerResultat():void
	        {
	            parentApplication.resultatCalcul(texte.length);
	        }
	
	    ]]>
	</mx:Script>
	
	<mx:Panel x="10" y="11" width="380" height="141" layout="absolute" title="Nombre de lettres">
	    <mx:TextInput x="10" y="10" width="340" id="chaine_txt" text="{texte}"/>
	    <mx:TextInput x="190" y="40" id="resultat_txt"/>
	    <mx:Button x="10" y="40" label="Calculer" click="envoyerResultat()" id="btn_calculer"/>
	</mx:Panel>
	
</mx:Module>
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
	    <![CDATA[
	        import mx.events.ModuleEvent;
	
	        public function chargerModule(module:String):void
	        {
	            chargeurModule.url = module;
	            chargeurModule.loadModule();
	        }
	
	        public function finChargementModule(e:ModuleEvent):void
	        {
	            var chargeur:ModuleLoader = e.target as ModuleLoader;
	            var connexionInterface:* = chargeur.child as InterfaceModule;
	
	            if( connexionInterface != null ) {
                connexionInterface.chaine = "Message a afficher";
            }
	        }
	
	         [Bindable]
	        private var resultat:String
	
	        public function resultatCalcul(param:int):void{
	
	            resultat = String(param);
	        }
	
	    ]]>
</mx:Script>

<mx:ModuleLoader id="chargeurModule" ready="finChargementModule(event)"></mx:ModuleLoader>

<mx:Button id="btn_charger" x="468" y="10" label="Charger" click="chargerModule('modLettre.swf')"/>

<mx:TextInput x="468" y="40" id="resultatCalcul_txt" text="{resultat}"/>
	
</mx:Application>
